home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / CRS / crs10.d81 / dark88-4.sfx / m.hayes.a1 (.txt) < prev    next >
Commodore BASIC  |  1990-02-12  |  5KB  |  250 lines

  1. 1000 REM *      DARKTERM '88
  2. 1010 REM * HAYES MODEM FILE SOURCE
  3. 1020 REM *
  4. 1030 OPEN1,8,15,"S0:D'88.HAYES":CLOSE1
  5. 1040 OPEN2,8,1,"0:D'88.HAYES"
  6. 1050 SYS700
  7. 1060 .OPT O2
  8. 1070 ;
  9. 1080 CHKIN  =$FFC6 ; KERNEL EQUATES
  10. 1090 CHKOUT =$FFC9
  11. 1100 CHRIN  =$FFCF
  12. 1110 CHROUT =$FFD2
  13. 1120 CLRCHN =$FFCC
  14. 1130 GETIN  =$FFE4
  15. 1140 ;
  16. 1150 PTR    =138 ; TEMPORARY POINTERS
  17. 1160 ST     =140
  18. 1170 PREFIX =930 ; DIALING PREFIX
  19. 1180 PRELEN =929 ; PREFIX LENGTH
  20. 1190 ;
  21. 1200 DETECT =922 ; CARRIER DETECT FLAG
  22. 1210 DDELAY =927 ; DIALING DELAY
  23. 1220 WDELAY =926 ; CARRIER WAIT DELAY
  24. 1230 HDELAY =925 ; ON-HOOK DELAY
  25. 1240 ;
  26. 1250 ; * SETTING THE INPUT/OUTPUTS *
  27. 1260 ;   THE GVC I TESTED WITH SETS
  28. 1270 ;   THE DDR REGISTER TO $84 HEX
  29. 1280 ;   WHICH WOULD BE DSR AND DTR
  30. 1290 ;   AS OUTPUTS AND THE REST AS
  31. 1300 ;   INPUTS. I DUNNO IF THIS IS
  32. 1310 ;   CORRECT. ACCORDING TO THE
  33. 1320 ;   64 REFERENCE MANUAL, RTS AND
  34. 1330 ;   DTR SHOULD BE THE ONLY OUTPUTS
  35. 1340 ;   LEMME KNOW WHAT THEY SHOULD
  36. 1350 ;   BE IF THIS VALUE IS NO (null).
  37. 1360 ;
  38. 1370 *=$4500 ; STARTS HERE UP TO $47FF
  39. 1380 ;
  40. 1390 JMP ANSWER ; AUTO-ANSWER
  41. 1400 JMP DODIAL ; AUTO-DIAL
  42. 1410 JMP ONHOOK ; LABEL SAYS ALL
  43. 1420 JMP OFHOOK ; OFF HOOK
  44. 1430 JMP CARCHK ; LOST CARRIER CHECK
  45. 1440 JMP CUSTOM ; USER DEFINED ROUTINE
  46. 1450 JMP HANGUP ; HANGUP ROUTINE
  47. 1460 ;
  48. 1470 DODIAL LDA #$84
  49. 1480 STA $DD03 ; SET DDR REGISTER
  50. 1490 STX PTR ; X/Y POINT TO DIAL
  51. 1500 STY PTR+1 ; STRING (18 DIGITS)
  52. 1510 JSR RETURN ; SEND 2 <CR> TO BEGIN
  53. 1520 LDA HDELAY ; WAIT SOME
  54. 1530 JSR WAIT
  55. 1540 LDX #5
  56. 1550 JSR CHKOUT
  57. 1560 LDY #0
  58. 1570 DODO1 CPY PRELEN ; CHECK LENGTH
  59. 1580 BEQ DODO2 ; BEFORE SENDING IN CASE
  60. 1590 LDA PREFIX,Y ; THERE IS NO PREFIX
  61. 1600 JSR MODOUT
  62. 1610 INY
  63. 1620 BNE DODO1
  64. 1630 DODO2 LDY #0
  65. 1640 DODO3 LDA (PTR),Y ; GET STRING
  66. 1650 CMP #32 ; SKIP ALL BLANKS
  67. 1660 BEQ DODO4
  68. 1670 AND #127 ; MASK FOR ASCII
  69. 1680 JSR MODOUT
  70. 1690 DODO4 INY
  71. 1700 CPY #18 ; DO ALL 18 BYTES
  72. 1710 BNE DODO3
  73. 1720 LDA #13 ; SEND THE <CR>
  74. 1730 JSR MODOUT
  75. 1740 JSR CLRCHN
  76. 1750 LDA WDELAY ; AND WAIT FOR CARRIER
  77. 1760 JSR WAIT
  78. 1770 LDA 56577 ; HAVE ONE
  79. 1780 AND #16
  80. 1790 BNE DODO5 ; YES (BIT IS INVERTED)
  81. 1800 SEC ; NOT ABORTED, SET C FLAG
  82. 1810 LDA #0 ; NO CARRIER, SET Z FLAG
  83. 1820 RTS
  84. 1830 DODO5 SEC ; SET C FLAG
  85. 1840 LDA #1 ; CARRIER, CLEAR Z FLAG
  86. 1850 RTS
  87. 1860 ;
  88. 1870 WAIT TAX
  89. 1880 W0 JSR CLRTIM ; CLEAR TI CLOCK
  90. 1890 W1 LDA 145 ; CHECK STOP KEY
  91. 1900 CMP #$7F
  92. 1910 BEQ W2 ; IF PRESSED, ABORT
  93. 1920 LDA 162
  94. 1930 CMP #60 ; ONE SECOND
  95. 1940 BCC W1
  96. 1950 DEX ; X NUMBER OF TIMES
  97. 1960 BEQ W3
  98. 1970 BNE W0
  99. 1980 W2 PLA
  100. 1990 PLA
  101. 2000 CLC ; CLEAR C FLAG - USER ABORTED
  102. 2010 W3 RTS
  103. 2020 ;
  104. 2030 ONHOOK LDA #70 ; WAIT ONE SEC...
  105. 2040 JSR JIFFY
  106. 2050 LDX #5
  107. 2060 JSR CHKOUT
  108. 2070 LDA #"+" ; SEND +++ SEQUENCE
  109. 2080 JSR MODOUT
  110. 2090 JSR MODOUT
  111. 2100 JSR MODOUT
  112. 2110 JSR CLRCHN
  113. 2120 LDA #70 ; WAIT ONE MORE SEC...
  114. 2130 JMP JIFFY
  115. 2140 ;
  116. 2150 OFHOOK JSR SMART ; OFF-HOOK
  117. 2160 .ASC "ATD"
  118. 2170 .BYT 13,0
  119. 2180 RTS
  120. 2190 ;
  121. 2200 SMART LDA 56577 ; SEND AT COMMANDS
  122. 2210 AND #16
  123. 2220 BEQ SM1
  124. 2230 JSR ONHOOK ; HANG UP UNTIL NO
  125. 2240 JMP SMART ; CARRIER
  126. 2250 SM1 PLA ; GET STRING ADDRESS FROM
  127. 2260 STA ST ; RETURN ADDRESS
  128. 2270 PLA
  129. 2280 STA ST+1
  130. 2290 LDX #5
  131. 2300 JSR CHKOUT
  132. 2310 LDA #40 ; WAIT >.5 SEC...
  133. 2320 JSR JIFFY
  134. 2330 SM2 INC ST
  135. 2340 BNE SM3
  136. 2350 INC ST+1
  137. 2360 SM3 LDY #0
  138. 2370 LDA (ST),Y ; SEND COMMAND
  139. 2380 BEQ SM4
  140. 2390 JSR MODOUT
  141. 2400 JMP SM2
  142. 2410 SM4 JSR CLRCHN
  143. 2420 LDA #40 ; WAIT SOME MORE
  144. 2430 JSR JIFFY
  145. 2440 LDA ST+1 ; PUSH NEW RETURN ADDRESS
  146. 2450 PHA
  147. 2460 LDA ST
  148. 2470 PHA
  149. 2480 RTS
  150. 2490 ;
  151. 2500 MODOUT JSR CHROUT
  152. 2510 MODO1 LDX 669 ; WAIT FOR RS232 TO
  153. 2520 CPX 670 ; (null) IDLE BEFORE SENDING
  154. 2530 BNE MODO1 ; AGAIN
  155. 2540 RTS
  156. 2550 ;
  157. 2560 RETURN LDX #5
  158. 2570 JSR CHKOUT
  159. 2580 LDA #13
  160. 2590 JSR MODOUT
  161. 2600 JSR MODOUT
  162. 2610 JMP CLRCHN
  163. 2620 ;
  164. 2630 CUSTOM RTS ; NONE NEEDED FOR 1670
  165. 2640 ;
  166. 2650 CARCHK BIT DETECT ; IF DETECT IS
  167. 2660 BPL CAR1 ; 0 THEN IGNORE CARRIER
  168. 2670 LDA $DD01
  169. 2680 AND #16
  170. 2690 BNE CAR1
  171. 2700 CLC ; DROPPED CARRIER
  172. 2710 RTS ; SO CLEAR C FLAG
  173. 2720 CAR1 SEC
  174. 2730 RTS
  175. 2740 ;
  176. 2750 CLRTIM LDA #0
  177. 2760 STA 160
  178. 2770 STA 161
  179. 2780 STA 162
  180. 2790 RTS
  181. 2800 ;
  182. 2810 JIFFY TAX ; WAIT SOME JIFFIES
  183. 2820 JSR CLRTIM
  184. 2830 JIF1 CPX 162
  185. 2840 BCS JIF1
  186. 2850 RTS
  187. 2860 ;
  188. 2870 ANSWER JSR RESET ; RESET MODEM
  189. 2880 ANS0 JSR SMART ; SEND AT ACK
  190. 2890 .ASC "AT H1 S0=1"
  191. 2900 .BYT 13,0
  192. 2910 LDX #5
  193. 2920 JSR CHKIN
  194. 2930 JSR GETIN
  195. 2940 PHA
  196. 2950 JSR CLRCHN
  197. 2960 PLA
  198. 2970 AND #127
  199. 2980 CMP #"0" ; WAIT FOR OKAY RESPONSE
  200. 2990 BNE ANS0
  201. 3000 ANS1 LDX #5
  202. 3010 JSR CHKIN
  203. 3020 JSR GETIN ; WAIT FOR NUMERICAL
  204. 3030 PHA ; RESPONSE
  205. 3040 JSR CLRCHN
  206. 3050 PLA
  207. 3060 AND #127 ; DISCARD BIT 7
  208. 3070 CMP #"1" ; 300 BAUD
  209. 3080 BEQ ANS2 ; YES
  210. 3090 CMP #"5" ; 1200 BAUD
  211. 3100 BEQ ANS3 ; YES
  212. 3110 JSR GETIN ; GET KEY FROM KEYBOARD
  213. 3120 CMP #0
  214. 3130 BEQ ANS1
  215. 3140 CLC
  216. 3150 RTS
  217. 3160 ANS2 LDX #<300
  218. 3170 LDY #>300
  219. 3180 BNE ANS4
  220. 3190 ANS3 LDX #<1200
  221. 3200 LDY #>1200
  222. 3210 ANS4 SEC
  223. 3220 RTS
  224. 3230 ;
  225. 3240 RESET LDA $29B
  226. 3250 STA $29C
  227. 3260 JSR SMART
  228. 3270 .ASC "ATZ"
  229. 3280 .BYT 13,0
  230. 3290 LDA #75
  231. 3300 JSR JIFFY
  232. 3310 LDA $29B
  233. 3320 STA $29C
  234. 3330 JSR SMART
  235. 3340 .ASC "AT V0 M0 X1"
  236. 3350 .BYT 13,0
  237. 3360 LDA #75
  238. 3370 JMP JIFFY
  239. 3380 ;
  240. 3390 HANGUP JSR ONHOOK ; SEND +++ SEQ.
  241. 3400 JSR SMART ; SEND COMMAND STRING
  242. 3410 .ASC "AT H0 S0=0"
  243. 3420 .BYT 13,0
  244. 3430 LDA $DD01
  245. 3440 AND #16 ; CHECK CARRIER
  246. 3450 BNE HANGUP ; STILL THERE, TRY MORE
  247. 3460 LDA $29B
  248. 3470 STA $29C
  249. 3480 RTS
  250.